Content data networks (“CDNs”) typically provide clusters of servers that serve content in response to requests sent via the Internet using the hypertext transport protocol (“HTTP”). To send a service request to the CDN, the client first sends a resolution request with the fully qualified domain name (“FQDN”) of the CDN to a domain name server (“DNS”) system to resolve the FQDN to the corresponding Internet protocol (“IP”) address of the CDN. The DNS system contains a mapping of FQDN to IP addresses. For example, the DNS system may map the FQDN of “acme.com” to the IP address of “192.168.1.1.” After receiving the IP address of the CDN, the client sends the service request to that IP address. Upon receiving the service request, the CDN processes the request and sends a response to the client.
The DNS system provides a hierarchy of DNSs for resolving FQDNs. At the top of the hierarchy is a root DNS. The root DNS has a mapping of top-level domain names (e.g., “.org” or “.com”) to IP addresses of top-level DNSs. A top-level DNS provides a mapping of domain names to IP addresses of domain-specific DNSs. A domain-specific DNS provides a mapping of domain-specific names to IP addresses of CDN servers. To resolve a FQDN, a client, which knows the IP address of the root DNS, sends a resolution request with the FQDN (e.g., “acme.com”) to that IP address of the root DNS. The root DNS returns the IP address for the top-level DNS for “.com” domain. The client then sends a resolution request with the FQDN to the returned IP address of the top-level DNS. The top-level DNS returns an IP address for the domain-specific DNS for the “acme.com” domain. The client then sends a resolution request with the FQDN to the IP address of the domain-specific DNS. The domain-specific DNS returns the IP address of a CDN server. The client then sends a service request to the IP address of the CDN server.
The routing of a request from a client to an IP address can take a variety of paths based on the routing algorithms of the hierarchy of networks that form the Internet. The hierarchy of networks includes a high-level network, internet service provider (“ISP”) networks, and for each ISP network, and domain networks. The high-level network routes messages between ISP networks. Each ISP network routes messages internally between domain networks connected via the ISP network and externally between a domain network of ISP network and a domain network connected via another ISP network. Each domain network routes messages internally between devices of the domain network and externally between devices of the domain network and the devices of other domain networks via the ISP network that connects the domain network to the Internet.
Messages routed from originating domains to destination domains may need to travel through many routers. For example, the message may need to travel from a client in the originating domain network through several routers within each of the originating domain network, the ISP network for the originating domain network, the top-level network, the ISP network for the destination domain network, and the destination domain network before reaching a server (e.g., CDN server) in the destination domain network.
Because the routing through the Internet can take a considerable amount of time, the networks of the Internet often position their routers and servers at geographically distributed locations. The routing algorithms attempt to route messages to a server in the destination domain network that is geographical close to the client in the source domain network in order to reduce the travel time of the message. For example, a CDN may have an edge server located on each continent to help ensure that messages sent from clients on each continent are routed to the edge server on that continent. Once a message is received at an edge server, the message can be sent within the CDN (e.g., via a fiber optic link) to a CDN server for processing that request. Although CDN edge servers can function simply as a pass-through for messages between clients and a CDN server, the CDN edge server may provide some of the functionality of the CDN. For example, an edge server may cache content so that it can respond to some requests and avoid sending those requests to a CDN server.
To help ensure that messages are routed to edge servers that are close to clients, the DNS for a CDN may try to determine the location of the client (e.g., using an IP geo-location database). Once the location is determined, the DNS for the CDN can return the IP address of the closest edge server. Although placement of edge servers can help reduce travel time, an edge server may be a bottleneck when message traffic being routed to that edge server is high. For example, message traffic may be high on one continent because of some political unrest. In such a case, the edge server on that continent may be overloaded while an edge server on another continent may have plenty of unused capacity.
Various approaches have been used to help prevent such overloading. One approach for preventing such overloading is for each edge server to report its load to a load balancing server of the domain. When the load balancing server detects that the load on an edge server is overloaded, the load balancing server can instruct the domain DNSs to start returning to clients, which would normally receive the IP address of the overloaded edge server, the IP address of another edge server that is not overloaded. One problem with such an approach is that the overhead of transmitting the load information from the edge servers and distributing the instructions to the domain DNSs can be high.
Another approach for preventing such overloading is for a domain network to use IP anycasting technology for the IP addresses of its edge servers. IP anycasting technology allows each edge server to have the same IP address (an “anycast IP address). When a message is sent to that anycast IP address, the message can be routed to any of the edge servers but typically to the one closest to the originating client. If an edge server becomes overloaded, then the routing of messages to that edge server from one or more ISPs can be blocked to reduce the load. Since the edge servers use IP anycasting technology, those blocked messages will be routed to another edge server that is not blocked from those ISPs. A problem with blocking messages from an ISP is that existing connections are dropped and will need to be reestablished with a different edge server. Moreover, in some cases, the messages from a blocked ISP may be routed through a non-blocked ISP back to the same overloaded edge server, which may result in the edge server remaining overloaded.